/*
 * Copyright (c) 2017. 杭州端点网络科技有限公司.  All rights reserved.
 */

package com.jiantong.user.service;

import com.google.common.base.Optional;
import com.jiantong.user.enums.DepartmentType;
import com.jiantong.user.model.DeclareStation;
import com.jiantong.user.model.Department;
import io.terminus.common.model.Response;

import java.util.List;
import java.util.Map;

/**
 * @author : panxin
 */
public interface DepartmentReadService {

    /**
     * 部门ID查询部门信息
     *
     * @param id id
     * @return 信息
     */
    Response<Department> findDepartmentById(Long id);

    /**
     * 部门ID查询部门信息
     *
     * @param id id
     * @return 信息
     */
    Response<Optional<Department>> findOptionalDepartmentById(Long id);

    /**
     * 申报点ID查询申报点信息
     *
     * @param id id
     * @return 信息
     */
    Response<DeclareStation> findDeclareStationById(Long id);

    /**
     * 申报点ID查询申报点信息
     *
     * @param id id
     * @return 信息
     */
    Response<Optional<DeclareStation>> findOptionalDeclareStationById(Long id);

    /**
     * 查询政府下的所有部门
     *
     * @param governmentId 政府ID
     * @return 部门信息
     */
    Response<List<Department>> findDepartmentsByGovernmentIdAndType(Long governmentId, DepartmentType type);


    Response<List<Department>> findList(Map criteria);

    Response<List<String>> selectByOrgan(Map criteria);
}
